package com.mango.community.util;

import org.apache.commons.lang3.StringUtils;

/**
 * @Author:  MangoCookieMilk
 * @Date:     2020/8/15 23:32
 *
 * 生成redis key的工具类
 */
public class RedisKeyUtil {

    /**
     * key的分割符
     */
    private static final String SPLIT = ":";

    /**
     * 实体（帖子，评论）赞的前缀
     */
    private static final String PREFIX_ENTITY_LIKE = "like:entity";

    /**
     * 用户收到赞的前缀
     */
    private static final String PREFIX_USER_LIKE = "like:user";

    /**
     * 关注的目标，就是你关注了谁
     */
    private static final String PREFIX_FOLLOWEE = "followee";

    /**
     * 粉丝，就是谁关注了你
     */
    private static final String PREFIX_FOLLOWER = "follower";

    /**
     * 验证码key的前缀
     */
    private static final String PREFIX_KAPTCHA= "kaptcha";

    /**
     * 登录凭证key的前缀
     */
    private static final String PREFIX_TICKET = "ticket";

    /**
     * 用户的key的前缀
     */
    private static final String PREFIX_USER = "user";



    /**  某个实体的赞的 key的方法
     * @param entityType   实体类型
     * @param entityId     实体id
     * @return
     */
    public static String getEntityLikeKey(int entityType,int entityId){
        return PREFIX_ENTITY_LIKE + SPLIT + entityType + SPLIT + entityId;
    }

    /** 某个用户收到的赞
     * @param userId
     * @return
     */
    public static String getUserLikeKey(int userId){
        return PREFIX_USER_LIKE + SPLIT + userId;
    }

    /** 某个用户关注的实体 可以是用户，帖子等
     * @param userId
     * @param entityType
     * @return
     */
    public static String getFolloweeKey(int userId,int entityType){
        return PREFIX_FOLLOWEE + SPLIT + userId + SPLIT + entityType;
    }

    /** 某个实体拥有的粉丝
     * @param entityType
     * @param entityId
     * @return
     */
    public static String getFollowerKey(int entityType,int entityId){
        return PREFIX_FOLLOWER + SPLIT +entityType + SPLIT + entityId;
    }

    /** 用户验证码的key生成
     * @param owner   用户验证码的拥有者，只是一个临时凭证，很块就会过期
     * @return
     */
    public static String getKaptchaKey(String owner){
        return PREFIX_KAPTCHA + SPLIT + owner;
    }

    /** 登录凭证key的生成
     * @param ticket  登录时生成的登录凭证
     * @return
     */
    public static String getTicketKey(String ticket){
        return PREFIX_TICKET + SPLIT + ticket;
    }

    /** 生成用户的key 用来在redis中缓存数据
     * @param userId
     * @return
     */
    public static String getUserKey(int userId){
        return PREFIX_USER + SPLIT + userId;
    }
}
